import axios from 'axios';

// 创建 Axios 实例
const instance = axios.create({
    // 设置基础 URL
    baseURL: 'https://apifoxmock.com/m1/4840030-4495188-default',
    // 设置请求超时时间
    timeout: 100000, // 单位为毫秒
});

// 请求拦截器
instance.interceptors.request.use(
    (config) => {
        // 在发送请求之前做些什么
        return config;
    },
    (error) => {
        // 对请求错误做些什么
        return Promise.reject(error);
    }
);

// 响应拦截器
instance.interceptors.response.use(
    (response) => {
        // 对响应数据做点什么
        return response;
    },
    (error) => {
        // 对响应错误做点什么
        return Promise.reject(error);
    }
);

/**
 * 封装请求函数
 * @param url 请求地址
 * @param method 接口类型 (GET, POST, PUT, DELETE 等)
 * @param data 携带的参数
 * @returns Promise<AxiosResponse>
 */
function rq(url: string, method: 'GET' | 'POST' | 'PUT' | 'DELETE', data?: any) {
    const config = {
        url,
        method,
        data,
    };

    if (method === 'GET') {
        config.params = data;
    }

    return instance(config);
}

// 导出 rq 函数
export { rq };
